package allwe.orderliness;

// 单例测试
public class Demo_singleton {

    private static Demo_singleton instance;

    private Demo_singleton() {}

    public static Demo_singleton getInstance() {
        // 线程B执行到此处 - 判断instance不为null
        if (null == instance) {
            synchronized (Demo_singleton.class) {
                if (null == instance) {
                    // 线程A执行到此处 - 开辟空间、初始化、instance指向对象地址 - √
                    // 线程A执行到此处 - 开辟空间、instance指向对象地址、初始化 - 可能导致刚指向地址时线程B获取锁资源。
                    instance = new Demo_singleton();
                }
            }
        }
        return instance;
    }
}
